SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
CREATE PROCEDURE [dbo].[SP_TMDOCU_BANC_Q01]
/*-------------------------------------------------------*/
/*---Empresa               OFISIS S.A.                --*/
/*---CLIEnte               VIRU                 --*/
/*---Sistema               Tesoreria                  --*/
/*---M®dulo                Empresa                    --*/
/*---Programa              RESUMEN DE LINEAS     --*/
/*---Script                SP_TMDOCU_BANC_Q01.sql     --*/
/*---Nombre SP             SP_TMDOCU_BANC_Q01         --*/
/*---Desarrollado por      Reynaldo Menacho Luyo      --*/
/*---Fecha Creaci®n        22/06/2004                 --*/
/*---Base Datos            SQL			       --*/
/*---Versi®n               2000                       --*/
/*---Invoca a SP                                      --*/
/*-------------------------------------------------------*/

/*-------------------------------------------------------*/
/*---Modificado 1 por     :--*/ 
/*---Fecha Modificaci®n   :--*/ 
/*---Detalle Modificaci®n :--*/
/*-------------------------------------------------------*/

/*-------------------------------------------------------*/
/*---Drop Proc SP_TMDOCU_BANC_Q01                      --*/
/*--- Grant execute on SP_TMDOCU_BANC_Q01 to public         --*/ 
/*---	SP_TMDOCU_BANC_Q01 "C", "P", "Where 1 = 1 ", '', "2004/06/30"     --*/
/*-------------------------------------------------------*/
@ISTI_AUXI_PROV TD_VC_001,
@ISCA_WHER_0001	VARCHAR(255),
@ISCA_WHER_0002	VARCHAR(255),
@IDFE_REPO		TD_DT_001,
@ISST_PAGO		TD_VC_001
 
AS	

CREATE TABLE #TWDOCU_BANC_Q01_1 
 ( CO_EMPR      varchar(3) NULL,
   CO_BANC	varchar(3) NULL,
   CO_TIPO_FINA	varchar(3) NULL,
   CO_MONE_CRED	varchar(3) NULL,
   TI_ENTI	varchar(1) NULL,
   CO_ENTI	varchar(20) NULL,
   TI_DOCU	varchar(3) NULL,
   NU_DOCU	varchar(20) NULL,
   FE_SOLI	datetime NULL,
   CO_MONE_DOCU	varchar(3) NULL,
   IM_TOTA	numeric(16,4) DEFAULT 0,
   IM_FINA numeric(16,4) DEFAULT 0,
   IM_PAGO_FINA numeric(16,4) DEFAULT 0,
   IM_LINE_UTIL numeric(16,4) DEFAULT 0,
   NU_DIAS	integer DEFAULT 0,
   FE_ABON	datetime NULL,
   FE_VALI datetime NULL,
   FE_PAGO datetime NULL,
   NU_FINA varchar(20) NULL,
   TI_DETA	varchar(2) NULL,
   ST_FLAG	varchar(1) NULL)
  
DECLARE 

@VSCO_EMPR 		TD_VC_002,
@VSTI_CAMB		TD_VC_001,
@VSTI_ORIG		TD_VC_001,
@VSDE_ORDE		TD_VC_050,
@VSFE_REPO		TD_VC_010,
@VNIM_CXCB_CONV TD_NU_016_004,
@VNIM_PAGO_CONV TD_NU_016_004,
@VNFE_0001      TD_IN_001, 
@VSCA_WHER 		VARCHAR(600),
@VDTIME			DATETIME

SELECT @VSCA_WHER = REPLACE(@ISCA_WHER_0001+@ISCA_WHER_0002, "TCFINA_BANC", "T1")

SELECT 	@VSFE_REPO = Convert(Varchar(10), @IDFE_REPO, 103)

-- TIPOS DE DETALLE(TI_DETA = "1" AL "7")
--1.- DOCS DE CLIENTES EN FINANCIAMIENTO			
--2.- PAGOS BANCOS / CAJA

--SELECT @VDTIME = GETDATE()
--SELECT 'INICIO INSERTS', @VDTIME

--1.1- FINANCIAMIENTOS QUE GENERAN CUENTA POR PAGAR Y FINANCIAN DOC'S BANCARIOS

  EXECUTE( "INSERT INTO #TWDOCU_BANC_Q01_1 
  (CO_EMPR, CO_BANC, CO_TIPO_FINA, TI_ENTI, CO_ENTI, TI_DOCU, NU_DOCU, CO_MONE_DOCU, 
   FE_SOLI, IM_TOTA, NU_DIAS, FE_ABON, FE_VALI, IM_FINA, NU_FINA, TI_DETA)
  Select T1.CO_EMPR, T1.CO_BANC, TTTIPO_FINA.CO_TIPO_FINA, T4.TI_ENTI, T4.CO_ENTI,
  T1.TI_DOCU_BANC, T1.NU_DOCU_BANC, T4.CO_MONE, T4.FE_SOLI, T4.IM_DOCU, T4.NU_DIAS_VENC, T1.FE_ABON,
  T4.FE_VALI, T1.IM_FINA, T1.NU_FINA, '1'
  From  TTTIPO_FINA, TCFINA_BANC T1, TMDOCU_BANC T4 " 
  + @VSCA_WHER + "
  And TTTIPO_FINA.CO_TIPO_FINA = T1.CO_TIPO_FINA
  And TTTIPO_FINA.ST_GENE_CXPA = 'S'
  And TTTIPO_FINA.ST_DOCU_BANC = 'S'
  And T1.FE_OPER <= Convert(Datetime, '" + @VSFE_REPO + "', 103)
  And T1.TI_SITU = 'APR'
  And T1.CO_EMPR = T4.CO_EMPR
  And T1.CO_BANC = T4.CO_BANC
  And T1.TI_DOCU_BANC = T4.TI_DOCU_BANC
  And T1.NU_DOCU_BANC = T4.NU_DOCU_BANC
  And T4.CO_ESTA_DOCU != 'ANU' ")

--2.1- FINANCIAMIENTOS QUE NO GENERAN CUENTA POR PAGAR Y FINANCIAN DOC'S DE BANCOS

  EXECUTE( "INSERT INTO #TWDOCU_BANC_Q01_1 
  (CO_EMPR, CO_BANC, CO_TIPO_FINA, TI_ENTI, CO_ENTI, TI_DOCU, NU_DOCU, CO_MONE_DOCU, 
   FE_SOLI, IM_TOTA, NU_DIAS, FE_ABON, FE_VALI, IM_FINA, NU_FINA, TI_DETA)
  Select T2.CO_EMPR, T2.CO_BANC, TTTIPO_FINA.CO_TIPO_FINA, T2.TI_ENTI, T2.CO_ENTI,
  T2.TI_DOCU_BANC, T2.NU_DOCU_BANC, T2.CO_MONE, T2.FE_SOLI, T2.IM_DOCU, T2.NU_DIAS_VENC, T1.FE_ABON,
  T2.FE_VALI, T1.IM_FINA, T1.NU_FINA, '2'
  From  TTTIPO_FINA, TMDOCU_BANC T2, TCFINA_BANC T1 " 
  + @VSCA_WHER + "
  And TTTIPO_FINA.CO_TIPO_FINA = T1.CO_TIPO_FINA
  And TTTIPO_FINA.ST_GENE_CXPA = 'N'
  And TTTIPO_FINA.ST_DOCU_BANC = 'S'
  And T2.CO_EMPR = T1.CO_EMPR
  And T2.CO_BANC = T1.CO_BANC
  And T2.TI_DOCU_BANC = T1.TI_DOCU_BANC
  And T2.NU_DOCU_BANC = T1.NU_DOCU_BANC
  And T1.FE_OPER <= Convert(Datetime, '" + @VSFE_REPO + "', 103)
  And T2.CO_ESTA_DOCU != 'ANU'
  And T1.TI_SITU = 'APR' ")


--1.2.- PAGOS BANCOS / CAJA
  EXECUTE("INSERT INTO #TWDOCU_BANC_Q01_1 
  (CO_EMPR, CO_BANC, CO_TIPO_FINA, TI_DOCU, NU_DOCU, FE_PAGO, 
   CO_MONE_DOCU, IM_PAGO_FINA, TI_DETA)
  Select T2.CO_EMPR, T2.CO_BANC, TTTIPO_FINA.CO_TIPO_FINA, T1.TI_DOCU, T1.NU_DOCU, T4.FE_OPER, 
  T2.CO_MONE, ( PatIndex(T3.ST_CIER_DOCU, 'N') * T3.IM_CONV_DOCU +
    PatIndex(T3.ST_CIER_DOCU, 'S') * T3.IM_SALD_DOCU ), '3'
  From  TTTIPO_FINA, #TWDOCU_BANC_Q01_1 T1, TMDOCU_PROV T2, TDMOVI_BANC T3, TCMOVI_BANC T4, TTDOCU_CNTB T5 
  Where TTTIPO_FINA.CO_TIPO_FINA = T2.CO_TIPO_FINA
  And TTTIPO_FINA.ST_GENE_CXPA = 'S'
  And TTTIPO_FINA.ST_DOCU_BANC = 'S'

  And T1.CO_EMPR = T2.CO_EMPR
  And T1.CO_BANC = T2.CO_BANC
  And T1.CO_TIPO_FINA = T2.CO_TIPO_FINA
  And T1.NU_FINA = T2.NU_DOCU_PROV

  And T3.TI_ENTI = '" + @ISTI_AUXI_PROV + "'
  AND T2.CO_EMPR = T3.CO_EMPR
  And T2.CO_PROV = T3.CO_ENTI
  AND T2.CO_TIPO_DOCU = T3.TI_DOCU_ENTI
  AND T2.NU_DOCU_PROV = T3.NU_DOCU_ENTI

  And T3.CO_EMPR = T4.CO_EMPR  
  And T3.CO_UNID_CONC = T4.CO_UNID_CONC
  And T3.CO_BANC = T4.CO_BANC  
  And T3.NU_CNTA_BANC  = T4.NU_CNTA_BANC  
  And T3.AA_BNCO = T4.AA_BNCO
  And T3.MM_BNCO = T4.MM_BNCO 
  And T3.TI_MOVI_BANC  = T4.TI_MOVI_BANC 
  And T3.NU_COMP_BANC = T4.NU_COMP_BANC
  And Rtrim(Isnull(T3.CO_CNTA_EMPR, '')) = ''
  And T4.FE_OPER  <= Convert(Datetime, '" + @VSFE_REPO + "', 103)
  And T4.TI_SITU != 'ANU' 

  And T2.CO_TIPO_DOCU = T5.TI_DOCU ")



--2.2.- CANCELACION DE FINANCIAMIENTOS
  EXECUTE("INSERT INTO #TWDOCU_BANC_Q01_1 
  (CO_EMPR, CO_BANC, CO_TIPO_FINA, TI_ENTI, CO_ENTI, TI_DOCU, NU_DOCU, FE_PAGO, 
   CO_MONE_DOCU, IM_PAGO_FINA, TI_DETA)
  Select T2.CO_EMPR, T2.CO_BANC, TTTIPO_FINA.CO_TIPO_FINA, T2.TI_ENTI, T2.CO_ENTI, 
  T2.TI_DOCU, T2.NU_DOCU, T3.FE_OPER, T2.CO_MONE_DOCU, 
  T3.IM_MOVI, '4'
  From  TTTIPO_FINA, #TWDOCU_BANC_Q01_1 T2, TTCANC_FINA T3 
  Where TTTIPO_FINA.CO_TIPO_FINA = T3.CO_TIPO_FINA
  And TTTIPO_FINA.ST_GENE_CXPA = 'N'
  And TTTIPO_FINA.ST_DOCU_BANC = 'S'
  And TTTIPO_FINA.ST_DOCU_PROV = 'N'

  AND T2.CO_EMPR = T3.CO_EMPR
  And T2.CO_BANC = T3.CO_BANC
  AND T2.TI_DOCU = T3.TI_DOCU_BANC
  AND T2.NU_DOCU = T3.NU_DOCU_BANC

  And T3.FE_OPER  <= Convert(Datetime, '" + @VSFE_REPO + "', 103)
  And T3.TI_SITU != 'ANU' ")

/*
SELECT * FROM #TWDOCU_BANC_Q01_1
WHERE TI_DETA = '99'
*/
-------------------------------------------------------------------------------
--   AGRUPO POR BANCO Y TIPO DE FINANCIAMIENTO Y LO INSERTO EN LA TABLA TEMPORAL   ---------
--------------------------------------------------------------------------------

   	EXECUTE( "INSERT INTO #TWDOCU_BANC_Q01_1 
 	(CO_EMPR, CO_BANC, CO_TIPO_FINA, TI_ENTI, CO_ENTI, TI_DOCU, NU_DOCU, CO_MONE_DOCU, 
    FE_SOLI, IM_TOTA, NU_DIAS, FE_ABON, FE_VALI, FE_PAGO, IM_FINA, IM_PAGO_FINA, NU_FINA, ST_FLAG)
	SELECT CO_EMPR, CO_BANC, CO_TIPO_FINA, Max(Isnull(TI_ENTI, '')), Max(Isnull(CO_ENTI, '')), 
	TI_DOCU, NU_DOCU, Max(CO_MONE_DOCU), Max(Isnull(FE_SOLI, '')), Max(Isnull(IM_TOTA, 0)), 
	Max(Isnull(NU_DIAS, 0)), Max(Isnull(FE_ABON, '')), Max(Isnull(FE_VALI, '')), Max(Isnull(FE_PAGO, '')),
	Max(Isnull(IM_FINA, 0)), Sum(Isnull(IM_PAGO_FINA, 0)), Max(Isnull(NU_FINA, '')),'S'
	FROM #TWDOCU_BANC_Q01_1
	GROUP BY CO_EMPR, CO_BANC, CO_TIPO_FINA, TI_DOCU, NU_DOCU ")

	DELETE #TWDOCU_BANC_Q01_1
	WHERE ST_FLAG IS NULL

	IF @ISST_PAGO = 'C'
	  DELETE #TWDOCU_BANC_Q01_1
	  FROM #TWDOCU_BANC_Q01_1 T1, (SELECT CO_EMPR, CO_BANC, CO_TIPO_FINA, TI_DOCU, NU_DOCU
									FROM #TWDOCU_BANC_Q01_1
									GROUP BY CO_EMPR, CO_BANC, CO_TIPO_FINA, TI_DOCU, NU_DOCU
									HAVING SUM(IM_FINA) = SUM(IM_PAGO_FINA) ) T2
	  WHERE T1.CO_EMPR = T2.CO_EMPR
	  AND T1.CO_BANC = T2.CO_BANC
	  AND T1.CO_TIPO_FINA = T2.CO_TIPO_FINA
	  AND T1.TI_DOCU = T2.TI_DOCU
	  AND T1.NU_DOCU = T2.NU_DOCU

	IF @ISST_PAGO = 'S'
	  DELETE #TWDOCU_BANC_Q01_1
	  FROM #TWDOCU_BANC_Q01_1 T1, (SELECT CO_EMPR, CO_BANC, CO_TIPO_FINA, TI_DOCU, NU_DOCU
									FROM #TWDOCU_BANC_Q01_1
									GROUP BY CO_EMPR, CO_BANC, CO_TIPO_FINA, TI_DOCU, NU_DOCU
									HAVING SUM(IM_FINA) != SUM(IM_PAGO_FINA) ) T2
	  WHERE T1.CO_EMPR = T2.CO_EMPR
	  AND T1.CO_BANC = T2.CO_BANC
	  AND T1.CO_TIPO_FINA = T2.CO_TIPO_FINA
	  AND T1.TI_DOCU = T2.TI_DOCU
	  AND T1.NU_DOCU = T2.NU_DOCU



	SELECT T1.CO_EMPR, T5.DE_NOMB, T1.CO_TIPO_FINA, T3.DE_TIPO_FINA, 
		T1.CO_BANC, T4.DE_NOMB_CORT, T1.NU_DOCU, T1.CO_ENTI, T6.NO_AUXI,
		CONVERT(VARCHAR(10), T1.FE_SOLI, 103), T1.CO_MONE_DOCU, T1.IM_TOTA, T1.NU_DIAS, 
		CONVERT(VARCHAR(10), T1.FE_ABON, 103), CONVERT(VARCHAR(10), T1.FE_VALI, 103), 
		CONVERT(VARCHAR(10), T1.FE_PAGO, 103), T1.IM_FINA, T1.IM_PAGO_FINA, T1.IM_FINA - T1.IM_PAGO_FINA, 
		T2.CO_MONE_CRED, T2.IM_LINE_CRED
	FROM #TWDOCU_BANC_Q01_1 T1, TMAUXI_EMPR T6, TTTIFN_BANC T2, TTTIPO_FINA T3, TTBANC_FINA T4, TMEMPR T5
	WHERE T1.ST_FLAG = 'S'
	AND T1.CO_EMPR = T6.CO_EMPR
	AND T1.TI_ENTI = T6.TI_AUXI_EMPR
	AND T1.CO_ENTI = T6.CO_AUXI_EMPR
	AND T1.CO_EMPR = T2.CO_EMPR
	AND T1.CO_BANC = T2.CO_BANC
	AND T1.CO_TIPO_FINA = T2.CO_TIPO_FINA
	AND T1.CO_TIPO_FINA = T3.CO_TIPO_FINA
	AND T1.CO_BANC = T4.CO_BANC
	AND T1.CO_EMPR = T5.CO_EMPR
	ORDER BY 1, 3, 5, 9

RETURN
/*------------------------- FIN ------------------------------ */


GO
